package kr.co.bettersoft.carrotmemberstore.activity;

/**
 * MainTabsPage
 * 로그인 이후 나오는 메인 탭 페이지.
 * 
 * 하단 탭호스트 - (홈 / 공지사항 / 고객 마일리지 / 설정) 버튼. 
 *    첫 화면은 기본 홈.
 * 
 *  1. 홈의 적립,조회 버튼과  적립시, 조회시 화면을 모두 묶어 하나의 액티비티로 사용.
 *   홈의 경우 화면은 2개 프레임 구성.
 *      좌측 : 가맹점 PR 이미지.(없으면 자체 기본 이미지)
 *      우측 : 적립 버튼 / 조회 버튼
 *  2. 공지사항(웹뷰) 를 묶어 하나의 액티비티로 사용.
 *  3. 고객 마일리지 - 좌측은 마일리지 리스트, 우측은 웹뷰 - 를 묶어 하나의 액티비티.
 *  4. 설정 (웹뷰) - 하나의 액티비티. (가맹점 가입화면과 유사함)
 * 
 */

import java.util.List;

import kr.co.bettersoft.carrotmemberstore.R;
import kr.co.bettersoft.carrotmemberstore.common.CommonConstant;
import android.app.ActivityManager;
import android.app.TabActivity;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;

public class MainTabsPage extends TabActivity implements OnTabChangeListener{
	String TAG ="MainTabsPage";

	public static TabHost tabhost;

	public static String merchantId;
	public static String countryCode;
	public static String languageCode;
	public static String prPicture01Url;

	public static int TAB_HEIGHT = 70;

	
	// 핸들러
	static Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			try{
				Bundle b = msg.getData();		
				if(b.getInt("init")==1){		// 홈갔다가 다른 아디로 왔을때. 탭을 0번 탭으로 초기화
					tabhost.getTabWidget().setCurrentTab(0);		// 탭 표시도 0번째
					tabhost.setCurrentTab(0);						// 화면도 0 번째
				}
			}catch(Exception e){
				e.printStackTrace();
			}
		}
	};
	public static void initTab(){
		new Thread(
				new Runnable(){
					public void run(){
						Message message = handler.obtainMessage();				
						Bundle b = new Bundle();
						b.putInt("init", 1);		// 홈갔다가 다른 아디로 왔을때. 탭을 0번 탭으로 초기화
						message.setData(b);
						handler.sendMessage(message);
					}
				}
		).start();
	}
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE );	// 타이틀바 제거
		setContentView(R.layout.main_tabs_page);

		//  전달 받은 가맹점 정보
		Intent receiveIntent = getIntent();						
		merchantId = receiveIntent.getStringExtra("merchantId");
		countryCode = receiveIntent.getStringExtra("countryCode");
		languageCode = receiveIntent.getStringExtra("languageCode");
		prPicture01Url = receiveIntent.getStringExtra("prPicture01Url");

		tabhost = getTabHost();

		tabhost.setOnTabChangedListener(this);		// 이걸 해줘야 체인지 효과가..

		// 탭 화면에 데이터 전달 -- 직접 읽어가도록 바꿈
		Intent mainActivityHomeIntent = new Intent(this, MainActivityHome.class);
		Intent mainActivityMileageIntent = new Intent(this, MainActivityMileage.class);
		Intent mainActivitySettingsIntent = new Intent(this, MainActivitySettings.class);


		// 하단 탭
		tabhost.addTab(
				tabhost.newTabSpec("tab_1")
				.setIndicator(getString(R.string.tab_home))								// 홈  tab_home
				//        		.setIndicator("내QR코드", getResources().getDrawable(R.drawable.tab01_indicator))
				//				.setIndicator((View)tvTab1)
				//				.setIndicator("", getResources().getDrawable(R.drawable.bottom_menu1))			// 하단 버튼을 이미지 사용함.
				//				.setContent(new Intent(this, MainActivityHome.class)));
				.setContent(mainActivityHomeIntent));
		// Optimizer.class 소스는 tab_1 탭에에 속함. Optimizer.java
		//         .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
		tabhost.addTab(tabhost.newTabSpec("tab_2")
				.setIndicator(getString(R.string.tab_notice))				// 공지사항
				//				.setIndicator((View)tvTab2)
				//				.setIndicator("", getResources().getDrawable(R.drawable.bottom_menu2))
				.setContent(new Intent(this, MainActivityNotice.class)));  
		tabhost.addTab(tabhost.newTabSpec("tab_3")
				.setIndicator(getString(R.string.tab_mileage))			// 고객 마일리지
				//				.setIndicator((View)tvTab3)
				//				.setIndicator("", getResources().getDrawable(R.drawable.bottom_menu3))
				//				.setContent(new Intent(this, MainActivityMileage.class)));
				.setContent(mainActivityMileageIntent));
		tabhost.addTab(tabhost.newTabSpec("tab_4")
				.setIndicator(getString(R.string.tab_settings))				// 설정
				//				.setIndicator((View)tvTab4)
				//				.setIndicator("", getResources().getDrawable(R.drawable.bottom_menu4))
				//				.setContent(new Intent(this, MainActivitySettings.class)));  
				.setContent(mainActivitySettingsIntent));  

		// xml 상에서 탭 높이 지정이 되지 않기 때문에 소스 상에서 탭 사이즈를 지정해준다.
		for(int tab = 0; tab<tabhost.getTabWidget().getChildCount(); ++tab){			
			tabhost.getTabWidget().getChildAt(tab).getLayoutParams().height=TAB_HEIGHT;		// 탭 별 높이.
			final View vw= tabhost.getTabWidget().getChildTabViewAt(tab);
			if(vw!=null){
				final View tv1 = vw.findViewById(android.R.id.title);
				if(tv1 instanceof TextView){
					//center text							// 탭 내 텍스트 중앙 정렬
					((TextView) tv1).setGravity(Gravity.CENTER);
					// set layout params					// 함께 써야 텍스트 중앙 정렬 됨.
					tv1.getLayoutParams().height=ViewGroup.LayoutParams.FILL_PARENT;
					tv1.getLayoutParams().width=ViewGroup.LayoutParams.WRAP_CONTENT;

					// wrap text
					((TextView) tv1).setSingleLine(false);		// 금넘어가면 두줄.

					//text size
					((TextView) tv1).setTextSize(20);			// 텍스트 사이즈
				}
			}
		}
		// Tab에 색 지정   --> 배경 디자인 지정.
		//        for(int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
		tabhost.getTabWidget().getChildAt(0).setBackgroundDrawable((getResources().getDrawable(R.drawable.tab01_indicator)));
		tabhost.getTabWidget().getChildAt(1).setBackgroundDrawable((getResources().getDrawable(R.drawable.tab02_indicator)));
		tabhost.getTabWidget().getChildAt(2).setBackgroundDrawable((getResources().getDrawable(R.drawable.tab03_indicator)));
		tabhost.getTabWidget().getChildAt(3).setBackgroundDrawable((getResources().getDrawable(R.drawable.tab04_indicator)));
		//        }
		//        tabhost.getTabWidget().setCurrentTab(0);
		//        tabhost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#595959"));


		// 기본 탭 택스트 색상 지정
		for(int i=0; i<tabhost.getTabWidget().getChildCount(); i++){
			final View vw= tabhost.getTabWidget().getChildTabViewAt(i);
			if(vw!=null){
				final View tv1 = vw.findViewById(android.R.id.title);
				if(tv1 instanceof TextView){
					//text color
					((TextView) tv1).setTextColor(getResources().getColor(android.R.color.black));			// 기본 텍스트 색상
				}
			}
		}
		// 선택된 탭의 텍스트 색상
		final View vw= tabhost.getTabWidget().getChildTabViewAt(tabhost.getCurrentTab());
		if(vw!=null){
			final View tv1 = vw.findViewById(android.R.id.title);
			if(tv1 instanceof TextView){
				//text color
				((TextView) tv1).setTextColor(getResources().getColor(android.R.color.white));			// 선택된 텍스트 색상
			}
		}	
	}
	/**
	 * onTabChanged
	 * 하단 탭 변경시 호출되어 필요한 처리를 수행한다
	 *
	 * @param tabId
	 * @param
	 * @return
	 */
	@Override
	public void onTabChanged(String tabId) {
		// tab 의 텍스트 색상 변경
		for(int i=0; i<tabhost.getTabWidget().getChildCount(); i++){
			final View vw= tabhost.getTabWidget().getChildTabViewAt(i);
			if(vw!=null){
				final View tv1 = vw.findViewById(android.R.id.title);
				if(tv1 instanceof TextView){
					//text color
					((TextView) tv1).setTextColor(getResources().getColor(android.R.color.black));			// 기본 텍스트 색상
				}
			}
		}
		// 선택된 탭의 텍스트 색상
		final View vw= tabhost.getTabWidget().getChildTabViewAt(tabhost.getCurrentTab());
		if(vw!=null){
			final View tv1 = vw.findViewById(android.R.id.title);
			if(tv1 instanceof TextView){
				//text color
				((TextView) tv1).setTextColor(getResources().getColor(android.R.color.white));			// 선택된 텍스트 색상
			}
		}
	}
	
	
	/**
	 * isForeGround
	 *  프로세스가 최상위로 실행중인지 검사한다
	 *
	 * @param
	 * @param
	 * @return rtn
	 */
	public Boolean isForeGround(){
		ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE );
		List<RunningTaskInfo> list = am.getRunningTasks(1);
		ComponentName cn = list.get(0). topActivity;
		String name = cn.getPackageName();
		Boolean rtn = false;
		if(name.indexOf(getPackageName()) > -1){
			rtn = true;
		} else{
			rtn = false;
		}
		return rtn;
	}
	/**
	 * onResume
	 * 액티비티 리쥼시 바탕화면 갔다왔는지 확인해서 로그인창을 띄운다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	@Override
	protected void onResume() {
		super.onResume();
		if(CommonConstant.comeBack){		// 바탕화면 갔다옴
			//    		 CommonUtils.didYouBack = false;
			Intent LoginIntent = new Intent(MainTabsPage.this, LoginPage.class);
			LoginIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);		// 새 액티비티 열지 않고 자리만 스왑.
			startActivity(LoginIntent);
		}
	}
	/**
	 * onPause
	 * 종료인지, 홈버튼으로 나간건지 확인하여 처리한다
	 *
	 * @param
	 * @param
	 * @return 
	 */
	@Override
	protected void onPause() {
		super.onPause();
		if(!isForeGround()){  
				CommonConstant.comeBack = true;				// 다시 돌아왔을때 알아볼수 있도록 함.
				CommonConstant.tempMyID = merchantId;				// 다시 돌아왔을때 알아볼수 있도록 함.
		}
	}

}
